package desmontec.documentos

class MapaEstocagem {

	Integer numeroDoCertificado

	Date competencia = new Date()
	
	static belongsTo = [dpg: DPG]

	static hasMany = [ guiasDeTrafego : GuiaDeTrafego ]

	static mapping = { guiasDeTrafego cascade:"all,delete-orphan" }

	static constraints = {
		// dpg(nullable: false) -> removido: aplica��o deve garantir que nunca ser� nulo
		numeroDoCertificado(min:0, nullable:false)
		competencia(validator: {val, obj -> val.after(obj.dpg.getInicioDoPrazoValidade()) && val.before(obj.dpg.getFimDoPrazoValidade()) && obj.hasDate()})
	}

	boolean hasDate() {
		List<MapaEstocagem> mapas = MapaEstocagem.findAll("from MapaEstocagem as m where m.dpg= ?", [this.dpg])
		for (int i = 0 ; i< mapas.size(); i++) {
			MapaEstocagem mapa = mapas.get(i);
			
			if (this.id != null) {
				if(this.id != mapa.id){
					Date comp = mapa.getCompetencia();
					if (competencia.year == comp.year && competencia.month == comp.month){
						return false;
					}
				}
			} else {
				Date comp = mapa.getCompetencia();
				if (competencia.year == comp.year && competencia.month == comp.month){
					return false;
				}
			}
		}
		return true;
	}
	
//	
//	String toString(){
//		return "${this.numeroDoCertificado}: ${this.dpg.beneficiario}";
//	}
//	
}
